home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / PIL / XbmImagePlugin.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  2KB  |  55 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __version__ = '0.6'
  5. import re
  6. import string
  7. import Image
  8. import ImageFile
  9. xbm_head = re.compile('\\s*#define[ \t]+[^_]*_width[ \t]+(?P<width>[0-9]+)[\r\n]+#define[ \t]+[^_]*_height[ \t]+(?P<height>[0-9]+)[\r\n]+(?P<hotspot>#define[ \t]+[^_]*_x_hot[ \t]+(?P<xhot>[0-9]+)[\r\n]+#define[ \t]+[^_]*_y_hot[ \t]+(?P<yhot>[0-9]+)[\r\n]+)?[\\000-\\377]*_bits\\[\\]')
  10.  
  11. def _accept(prefix):
  12.     return string.lstrip(prefix)[:7] == '#define'
  13.  
  14.  
  15. class XbmImageFile(ImageFile.ImageFile):
  16.     format = 'XBM'
  17.     format_description = 'X11 Bitmap'
  18.     
  19.     def _open(self):
  20.         m = xbm_head.match(self.fp.read(512))
  21.         if m:
  22.             xsize = int(m.group('width'))
  23.             ysize = int(m.group('height'))
  24.             if m.group('hotspot'):
  25.                 self.info['hotspot'] = (int(m.group('xhot')), int(m.group('yhot')))
  26.             
  27.             self.mode = '1'
  28.             self.size = (xsize, ysize)
  29.             self.tile = [
  30.                 ('xbm', (0, 0) + self.size, m.end(), None)]
  31.         
  32.  
  33.  
  34.  
  35. def _save(im, fp, filename):
  36.     if im.mode != '1':
  37.         raise IOError, 'cannot write mode %s as XBM' % im.mode
  38.     
  39.     fp.write('#define im_width %d\n' % im.size[0])
  40.     fp.write('#define im_height %d\n' % im.size[1])
  41.     hotspot = im.encoderinfo.get('hotspot')
  42.     if hotspot:
  43.         fp.write('#define im_x_hot %d\n' % hotspot[0])
  44.         fp.write('#define im_y_hot %d\n' % hotspot[1])
  45.     
  46.     fp.write('static char im_bits[] = {\n')
  47.     ImageFile._save(im, fp, [
  48.         ('xbm', (0, 0) + im.size, 0, None)])
  49.     fp.write('};\n')
  50.  
  51. Image.register_open('XBM', XbmImageFile, _accept)
  52. Image.register_save('XBM', _save)
  53. Image.register_extension('XBM', '.xbm')
  54. Image.register_mime('XBM', 'image/xbm')
  55.